﻿/////////////////////////////////////////////////////////////////////////////////
///              ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO                   ///
///                        PROYECTO INTEGRADOR IV                            /// 
///                         PROYECTO SICOPS 2011                              /// 
/// ------------------------------------------------------------------------- ///  
///              **********GRUPO DE DESARROLLADORES**********                 ///
///                 ************PEGASO COMPANY**************                    /// 
///---------------------------------------------------------------------------///
///                                                         RIOBAMBA-ECUADOR  ///
///---------------------------------------------------------------------------///
///                FORMULARIO DE ASIGNACION DE PRODUCTOS                    ///
///---------------------------------------------------------------------------///
///Permite la asiganar diversos productos a un pedido                        ///
///                                              Responsable:  Sagñay Rosa   ///
/////////////////////////////////////////////////////////////////////////////////





using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LogisticaDeAcceso;
//Formulario para la asignacion de proveedores en los registros de bienes activos.
namespace Aplicacion.Formularios
{
    public partial class frmAsignacionProductos : Form
    {
        private bool varBandera = true;//Variable que ayuda al control de los espacios
        private string varCuenta;//Variable con el nombre de cuenta
        private string varPropietario;//Variable con el nombre del propietario de la cuenta
        private string varConexion;//Variable con la direccion de coneccion, el nombre del base de datos y la cuenta de acceso

        public frmAsignacionProductos()
        {
            InitializeComponent();
        }

        public frmAsignacionProductos(string Cuenta, string Propietario, string Conexion)
        {
            InitializeComponent();
            varCuenta = Cuenta;//Asignacion del valor desde el exterior Nombre de cuenta
            varPropietario = Propietario;//Asignacion del valor desde el exterior Nombre de Propietario
            varConexion = Conexion;//Asignacion del valor desde el exterior Nombre de la conexion
        }
     

        private void frmAsignacionProductos_Load(object sender, EventArgs e)
        {
            metActualizarPedidos();//Muestra datos de pedido
            metActualizarProveedor();//Muestra datos de Proveedor
            metAsignar();//Asigna valores de documentacion
        }   

      //Asignacion de valores en el area de informacion
        private void metAsignar()
        {
            tlsNombreCuentaRes.Text = varCuenta;
            tlsNombrePropietaRes.Text = varPropietario;            
        }
        //Actualizar pedidos

        private void metActualizarPedidos()
        {
            Negocios.ComponeteNegocios auxCom = new Negocios.ComponeteNegocios();
            auxCom.metActualizarPedidos(varConexion,this.coleccionDeDatos1);
           
        }
        //Presentar daots de proveedores
        private void metActualizarProveedor()
        {
            Negocios.ComponeteNegocios auxCom = new Negocios.ComponeteNegocios();
            auxCom.metActualizarProveedor(varConexion,this.coleccionDeDatos1);
           //Configuracion para el acceso a la vista de proveedores registrados
           //activacion de la vista proveedores registrados
        }       
        //Guardar el registro del proveedor
        private void GuardarBoton_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("¿Desea continuar con el registro de la asignación actual?", "Atencion", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                metIngresarDatos();//Llamado al metodo de ingreso de asignacion de bienes
                btnGuardarAsig.Enabled = false;///////////
                btnNuevoAsig.Enabled = true;/////////////Deshabilita y habilita los botones de guardar y nuevo ingreso
                metCambiarEstado();
                this.coleccionDeDatos1.sp_MostrarNumPedBienes.Clear();//Limpia el data set
                metActualizarBienes();
            }
        }
        //Metodo para cambiar el estado de la asignacion
        private void metCambiarEstado()
        {
            Negocios.ComponeteNegocios auxCom = new Negocios.ComponeteNegocios();
            auxCom.metCambiarEstadoProducto(varConexion, textCodigoRegPr.Text);
        }

        //Ingreso de datos extras para el registro de la asignacion
        private void metIngresarDatos()
        {
            Negocios.ComponeteNegocios auxCom = new Negocios.ComponeteNegocios();
            auxCom.metIngresarDatos(varConexion, textCodigoRegPr.Text, txtCodigoProv.Text, metCombinacion(), dtpFechaAsign.Text, txtModalidadAsig.Text, txtObservacionAsign.Text, dtpFechaAsign.Text);
        }

        private void comDetalleRegPr_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;//Impide que se escriba en los combo box
            metControl();
        }

        private void btnLlamadoProveedor_Click(object sender, EventArgs e)
        {
            Formularios.frmProveedor auxFrm = new frmProveedor(varConexion);//Ingreso al formulario del proveedor
            this.coleccionDeDatos1.vs_getProveedoresResitrados.Clear();//Limpia el data set contenedor de la vista
            auxFrm.ShowDialog();
            metActualizarProveedor();//Llena nuevamente los datos de esta vista
        }
        private void metControl()
        {
            //Verifica los dtos en los casilleros que deben ser llenados por el usuario
            if (txtCodigoProv.Text.Length > 5 && textCodigoRegPr.Text.Length > 5 && (txtEstadosAct.Text != "ASIGNADO" && txtEstadosAct.Text != "INACTIVO") && txtModalidadAsig.Text.Length > 4 && txtGarantiaAsig.Text.Length >= 1 && metGarant() == true && txtObservacionAsign.Text.Length > 4 && cmbTiempoAsig.Text.Length > 2)
                btnGuardarAsig.Enabled = true;//Activar el boton de actualizar
            else
            {
                btnGuardarAsig.Enabled = false;//Deshctivar el boton de actualizar
                btnNuevoAsig.Enabled = true;//Nuevo ingreso activo
            }

        }
        //Controla que no existan ingreson con un ingreso de 0 o menores
        private bool metGarant()
        {
            bool mas=false;
            if (txtGarantiaAsig.Text.Length >= 1)
            {
                if (Convert.ToInt32(txtGarantiaAsig.Text) > 0)
                    mas = true;
            }
            return mas;
        
        }

        private void TextModalidadAsig_KeyUp(object sender, KeyEventArgs e)
        {
            metControl();//Verifica si los casilleros estan con datos
        }
        //Metodo que une el tiempo de la garantia con la unidad
        private string metCombinacion()
        {
            return string.Concat(txtGarantiaAsig.Text, " ", cmbTiempoAsig.Text);//Conctena el numero y la unidad de medida
        }      

        private void textObservacionAsign_KeyPress(object sender, KeyPressEventArgs e)
        {
            Aplicacion.clsControles.clsControles auxCls = new Aplicacion.clsControles.clsControles();
            varBandera = auxCls.metControlarEspacios(e, varBandera);//Controla que el ingreso sea de numeros o de letras
            varBandera = auxCls.metPrecionarEspacio(e, varBandera);//Control de espacios para que ingresen mas de un espacio
        }

        private void textGarantiaAsig_KeyPress(object sender, KeyPressEventArgs e)
        {
            Aplicacion.clsControles.clsControles auxCls = new Aplicacion.clsControles.clsControles();
            varBandera = auxCls.metSoloNumeros(e, varBandera);//Controla que solo ingrese numeros
        }
        private void metLimpiar()
        {
            //Limpia los datos que esta ingresados /
            //para un ingreso nuevo
            txtGarantiaAsig.Clear();
            txtObservacionAsign.Clear();
            txtModalidadAsig.Clear();
            txtGarantiaAsig.Focus();
        }
        //Limpia los datos para una nueva asignacion 
        private void btnNuevoAsig_Click(object sender, EventArgs e)
        {
            metLimpiar();//Activa el limpiador de datos
            btnGuardarAsig.Enabled = false;
            btnNuevoAsig.Enabled = false;
        }

        private void comNumeroPe_SelectedValueChanged(object sender, EventArgs e)
        {//Actualizar la vista que muestra los datos de los bienes registrados en la base
            this.coleccionDeDatos1.sp_MostrarNumPedBienes.Clear();//Limpia el data set
            metActualizarBienes();
            metMostrarEstados();
            metControl();

        }
        //Presenta los bienes asignados de la lista de registros
        private void metActualizarBienes()
        {
            Negocios.ComponeteNegocios auxCom = new Negocios.ComponeteNegocios();
            auxCom.metMostrarBienesAA(varConexion, this.coleccionDeDatos1, cmbNumeroPe.Text);
           //Configura la actualizacion
            //Activa la vista
        }
        //Presenta los estados de la asignacion
        private void metMostrarEstados()
        {
            Negocios.ComponeteNegocios auxCom = new Negocios.ComponeteNegocios();
            txtEstadosAct.Text=auxCom.metMostrarEstadosAA(varConexion, textCodigoRegPr.Text);
    
        }
        //Controla el ingreso de los datos en el area de la garantia
        private void comDetalleRegPr_SelectedValueChanged(object sender, EventArgs e)
        {
            txtGarantiaAsig.Clear();
            txtGarantiaAsig.Focus();
            metControl();
        }

              
    }
}
